#ifndef APPSTATE_H
#define APPSTATE_H

namespace sf
{
    class RenderWindow;
}


class AppState
{
    public:
        AppState();
        virtual ~AppState();
        virtual void OnActivate() = 0;
        virtual void OnDeactivate() = 0;
        virtual void OnLoop(sf::RenderWindow&) = 0;

        //possible states:
        enum
        {
            SplashScreen,
            DisplayMandelbrot
        };
};

class AppStateSplashScreen : public AppState
{
    public:
        AppStateSplashScreen();
        ~AppStateSplashScreen();
        void OnActivate();
        void OnDeactivate();
        void OnLoop(sf::RenderWindow&);
};

class AppStateMandelbrot : public AppState
{
    public:
        AppStateMandelbrot();
        ~AppStateMandelbrot();
        void OnActivate();
        void OnDeactivate();
        void OnLoop(sf::RenderWindow&);
};

#endif // APPSTATE_H





